iT邦幫忙

2022 iThome 鐵人賽

DAY 14
0

Model、View、ViewModel 這三個名詞合稱 MVVM,是一種處理 UI 與事務邏輯的架構,類似的架構還有 MVC、MVP,有興趣可以搜尋關鍵字進一步研究。
參照架構開發可以讓元件之間職責分離、分工明確,使程式更好維護、測試。

View

UI 就是 View,職責就是顯示畫面,並不關心顯示的資料取得或使用者按下按鈕背後做了什麼事。

Model

Model 是資料來源,負責提供資料給 ViewModel。

ViewModel

ViewModel 負責從 Model 獲取資料並提供給 View,大部分的事務邏輯都在這裡處理。

依賴關係

Model 跟 View 一個負責提供資料,一個只負責顯示資料,但兩者直接依賴會造成資料格式會因為 UI 變動被迫跟著變動,所以要交由 ViewModel 處理,ViewModel 單向依賴 Model,由 ViewModel 要向 Model 請求資料,但 ViewModel 跟 View 之間會有雙向互動就比較複雜,常見兩種架構:binding 與 observer pattern,而 Jetpack Compose 推薦後者。

Observer Pattern

最常見的例子: YouTube 訂閱機制,使用者向頻道「訂閱」,把使用者資訊存在頻道,當頻道發布新影片時,藉由儲存的使用者資訊主動通知使用者。
在 Android 中 ViewModel 會提供 State 給 View,相當於 View 「訂閱」 ViewModel,當 ViewModel 的資料發生改變時通知 View 更新,就可以避免不必要的畫面更新。


上一篇
Day 13 - Android debug 之翻車紀錄
下一篇
Day 15 - 依賴注入
系列文
關於我用 Compose UI 造新輪子這檔事24
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言